Glisp Help: はじめてのスケッチ
一番簡単なスケッチの例です。
code:clj
関数 circle は、丸のパスを生成する関数です。100 100 は丸の中心、40は半径となります。Glisp のキャンバスは右上が原点です。 しかし、まだ塗りや線が設定されていないので、点線で表示されています。これをトマト色に塗りつぶしてみます。
code:clj
(style (fill "tomato")
style はスタイルを適用する関数です。 1 つめの引数 (fill "red")というスタイルを 2 つめ以降の引数、この場合は (circle [50 50] 40) というパスに適用しています。ちなみにfillもまた、塗りのスタイル情報を返す関数です。
ついでに線色もつけたい場合は、 style を入れ子にします。
code:clj
(style (fill "RoyalBlue")
(style (stroke "tomato" 10)
スタイルは外側から順に描画されます。この例では、丸がまずトマト色で塗られてから太さ 10 の青い線で縁取られます。この表記は、style関数の第 2 引数をベクタにすることで、このように縮めて書くこともできます。
code:clojure
複数のパスにまとめてスタイルを適用することもできます。
code:clj
(style (stroke "turquoise" 6)
rect は右上の位置と幅・高さから四角形のパスを返す関数です。
トランスフォーム
transform関数を使って、グループ全体の位置や角度といったトランスフォーム値を設定することができます。
code:clj
(transform (translate 30 30) (style (fill "gold")
translate関数は、平行移動のトランスフォーム値(実体は行列)を返します。こうしたトランスフォーム値を返す関数は他にscaleやrotateなどがありますが、これらはmat2d/*関数で組み合わせることが出来ます。
code:clj
(transform (mat2d/* (translate 20 10) (rotate (deg 20))
(style (fill "gold")
rotate はラジアン角を引数に取るので、deg関数で「度」からラジアンへの変換をしています。